package my.senix.classics;

/**
 * 有1、2、3、4个数字，能组成多少个互不相同且无重复数字的三位数？
 * 都是多少？
 * <p>
 * <p>
 * Created by lhs on 2018/11/7.
 */
public class Permutation2Combination {

    /**
     * 直接递归
     */
    private static int sum=0;

    public static void main(String[] args) {

        f(0, 3, 4, "");

        System.out.println("总共："+sum);
    }

    /**
     * @param cnt      第几层递归
     * @param kinds    要生成几位数
     * @param totalNum 共有几个数字
     * @param num      目前生成的数
     */
    private static void f(int cnt, int kinds, int totalNum, String num) {
        if (cnt == kinds) {
            sum++;
            System.out.println(num);
            return;
        }

        for (int i = 1; i <= totalNum; i++) {

            if (num.indexOf(i+"") == -1) {
                f(cnt+1, kinds, totalNum, num + i);
            }
        }
    }
}
